The Institute of Electrical and Electronics Engineers (IEEE) specifies a standard, IEEE Std 754, for representation and conversion of exponential or floating point numbers. For example, integer numbers can be converted to exponential numbers and binary numbers can be used to represent different parts of the exponential numbers. In particular, an exponential, or floating point, number includes a sign, a significand or mantissa, and an exponent. The precision of the floating point number indicates the number of bits available to represent the floating point number; that is, the higher the precision, the more bits available. A single precision floating point number is represented by 32 bits: one bit for the sign bit, eight bits for the exponent, and 23 bits for the mantissa. For norm numbers, a bit value of one is understood to precede the 23 bits of the mantissa, becoming in effect, an implicit one most significant bit.
Floating point arithmetic is used for high-powered computing operations that require millions or billions or more of floating point operations per second (FLOPS). Basic functional building blocks such as floating point adders, multipliers and dividers are used to perform the arithmetic operations on floating point numbers. Numerous methods and systems of implementing binary adders in compliance with the IEEE 754 standard are well known in the art. A common general technique for adding two floating point numbers includes aligning and then adding the mantissas of the floating point numbers to produce an arithmetic result for a mantissa. Arriving at the final result for the mantissa and for the calculation typically involves continued shifting and aligning, followed by a final rounding step, according to, for example, the round to nearest method of IEEE Std 754.
The design of floating point arithmetic functions to manage high amounts of data throughput at ever increasing speeds and in ever reducing chip area presents challenges for designers of circuit architecture to contend with. Implementations of floating point arithmetic functional blocks, such as binary floating point adder implementations, need to become faster, more efficient, and take up less space on-chip. Accordingly, it would be desirable to provide alternative implementations and schemes that do not suffer from the drawbacks and weaknesses of existing implementations but rather that are faster, more efficient, that consume incrementally less space on chip.